home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / R-Shows / (c)expo88b.d64 / sidpic v2.5 (.txt) < prev    next >
Commodore BASIC  |  2009-02-03  |  11KB  |  215 lines

  1. 10 POKE52,PEEK(46)+6:POKE56,PEEK(52):CLR
  2. 12 A1$="ABCDEFGHIJKLMNOPQ":A1$=A1$+A1$+A1$+A1$+A1$:A1$=A1$+A1$+A1$
  3. 14 DEF FNH(X)=INT(X/256)
  4. 16 DEF FNL(X)=X-256*FNH(X)
  5. 18 BL$="                                        ":C$=CHR$(.)
  6. 20 SA=780:SX=781:SY=782:SP=783:POKESA,1:POKESX,8:POKESY,1:SYS 65466
  7. 22 POKE53281,0:POKE53280,11:POKE650,128
  8. 24 PRINT"[147]"CHR$(142);:GOSUB 116
  9. 26 PRINT" CAN PLAY ALL CURRENT SIDPLAYER FILES"
  10. 28 PRINT" AS USED WITH KPLAY, MPLAY, SINGALONG"
  11. 30 PRINT" AND OTHER COMPARABLE SIDPLAYERS."
  12. 32 PRINT" USES SID MUSIC AND RELATED FILE WITH"
  13. 34 PRINT" [158].MUS (MUSIC FILES), [153]WITH..."
  14. 36 PRINT" [158].WDS (WORD FILES)   [153]AND/OR..."
  15. 38 PRINT" [158].PIC (KOALA/DOODLE PICTURE FILES)"
  16. 40 PRINT " THE BASIC SIDPLAYER IS FROM COMPUTE'S"
  17. 42 PRINT " "CHR$(34)"ALL ABOUT THE COMMODORE 64, VOL. TWO"CHR$(34)
  18. 44 PRINT " BY CRAIG CHAMBERLAIN"
  19. 46 PRINT "     [154][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]"
  20. 48 PRINT "     HIT ANY KEY TO READ DIRECTORY[146][187]"
  21. 50 PRINT "     [188][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][146][190]"
  22. 52 PRINT "[151] (C)1986  OKAY TO COPY, MAY NOT BE SOLD"
  23. 54 SS=10752:HK=SS+274:PL=SS+297:DP=SS+471:SV=PEEK(55)+PEEK(56)*256:MA=0
  24. 56 GET A$:IF A$="" GOTO 56
  25. 58 REM ***** NEXT SCREEN PAGE
  26. 60 NP=0
  27. 62 PRINT"[147][158][213][192][192][192][192][192][192][192][192][192][192][192][192][178][192][192][192][192][192][192][192][192][192][192][192][192][178][192][192][192][192][192][192][192][192][192][192][192][201][157][157]"CHR$(148)"[192]"
  28. 64 FORA=1TO17:PRINT"[221]"SPC(12)"[221]"SPC(12)"[221]"SPC(11)"[221][157]"CHR$(148):NEXT
  29. 66 PRINT"[202][192][192][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][192][203][157][157]"CHR$(148)"[192]":GOSUB116
  30. 68 PRINT"[154]EXIT: F7  REPLAY: * [221]"
  31. 70 PRINT"[154]PLAY ONE:F1/[154]PLAY ALL:F3/[154]NEXT DISK:F5[221]":GOTO 132
  32. 72 PRINT"[147][158][213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201][157][157]"CHR$(148)"[192]"
  33. 74 FORA=1TO9:PRINT"[221]"SPC(37)"[221][157]"CHR$(148):NEXT
  34. 76 PRINT"[171][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][179][157][157]"CHR$(148)"[192]"
  35. 78 PRINT"[221] NOTES:F1/NEXTSONG:F3/MENU:F5/EXIT:F7[158][221][157]";CHR$(148)" [158]"
  36. 80 PRINT"[171][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][179][157][157]"CHR$(148)"[192]"
  37. 82 FOR A=1 TO 5:PRINT"[221]"SPC(37)"[221][157]"CHR$(148):NEXT
  38. 84 PRINT"[202][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][203][157][157]"CHR$(148)"[192]":GOSUB116:RETURN
  39. 86 REM ***** MUSIC STAFF DISPLAY
  40. 88 A=10496/64
  41. 90 POKE53269,31
  42. 92 POKE2040,A:POKE2041,A+1:POKE2042,A+2:POKE2043,A+2:POKE2044,A+2
  43. 94 POKE53287,1:POKE53288,1
  44. 96 POKESS+5,2:POKESS+6,7:POKESS+7,14
  45. 98 V=53248:POKEV,40:POKEV+1,111
  46. 100 POKEV+2,40:POKEV+3,152
  47. 102 POKEV+4,120:POKEV+5,0
  48. 104 POKEV+6,185:POKEV+7,0
  49. 106 POKEV+8,255:POKEV+9,0      
  50. 108 PRINT"[155][176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
  51. 110 FOR A=1 TO 7:IF A=4 THEN PRINT"[221]"SPC(36)"[221]":GOTO 114
  52. 112 PRINT"[171][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][179]"
  53. 114 NEXT:PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]":RETURN
  54. 116 PRINT" [213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201]"
  55. 118 PRINT" [221]           [213][201][154][178][159][176][201]  [187][159][178][201][154][178][213][201]        V2.5[221]
  56. 120 [153]" (null)           MID$RIGHT$CONT(null)OPEN(null)(null) SINWAIT OPEN-(null)CONT(null)(null)             (null)
  57. 122 PRINT" [221]           [202][203][154][177][159][173][203][188]  [159][177] [154][177][202][203]            [221]
  58. 124 [153]" (null) CONTTHE SIDPLAYER ART AND MUSIC REVIEW (null)
  59. 126 PRINT" [202][192][192][192][192][192][192][192][201] K[159]E[156]RMI[158]T [129]R. [149]W[150]O[152]O[153]D[154]A[155]L[153]L [213][192][192][192][192][192][192][192][192][203]"
  60. 128 PRINT"[202][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][203]":RETURN
  61. 130 REM ***** PRINTOUT DIR
  62. 132 CL=5:PRINT ""
  63. 134 GOTO 356
  64. 136 SYS9841:
  65. 138 REM ***** GET SONG TITLE
  66. 140 SYS9884:
  67. 142 LA=SV
  68. 144 PRINT"";:F1=FRE(0):F$="":F1=1024+(40*7)+1:V0=7:H0=1
  69. 146 POKEF1,PEEK(F1)+128
  70. 148 POKEF1,PEEK(F1)-128:F1=1024+(V0*40)+H0:POKEF1,PEEK(F1)+128
  71. 150 SYS10689:GET A$:IF A$="" THEN V0=V0+1:IF V0>23 THEN V0=7
  72. 152 IF A$="[145]" THEN V0=V0-1:IF V0<7 THEN V0=23
  73. 154 IF A$="" THEN H0=H0+13:IF H0>27 THEN H0=1
  74. 156 IF A$="[157]" THEN H0=H0-13:IF H0<1 THEN H0=27
  75. 158 IF A$="" THEN V0=7:H0=1
  76. 160 IF A$="[135]" GOTO 60
  77. 162 IF A$="[137]" THEN NP=NP+K:GOTO 62
  78. 164 IF A$="[134]" GOTO 196
  79. 166 IF A$="[136]" THEN POKE53280,14:POKE 53281,6:PRINT"[147][154]";:END
  80. 168 IF A$="*" THEN GOTO 184
  81. 170 IF A$=CHR$(13) GOTO 176
  82. 172 IF A$=CHR$(141) THEN GOSUB 220:CL=13:GOTO 146
  83. 174 IF A$<>"[133]" GOTO 148
  84. 176 POKEF1,PEEK(F1)-128
  85. 178 SYS9798:
  86. 180 POKE198,0:GOSUB 210:GOSUB 232:GOTO 136
  87. 182 REM ***** REPLAY LAST MUSIC
  88. 184 POKEF1,PEEK(F1)-128:SYS9798:
  89. 186 IF MA<SV GOTO 140
  90. 188 A$="":F$="FAKE.MUS":IF PIC THEN GOSUB 346:GOTO 192
  91. 190 IF WDS THEN WT=WA:GOSUB 318:HI=FNH(MA):LO=FNL(MA)
  92. 192 GOSUB 244:GOTO 136
  93. 194 REM ***** F3 PLAY ALL MUSIC
  94. 196 POKEF1,PEEK(F1)-128
  95. 198 FOR V0=7 TO 23:FOR H0=1 TO 27 STEP 13:F$="":F1=1024+(V0*40)+H0:LA=SV
  96. 200 SYS9798:
  97. 202 IF (PEEK(F1+54272)AND15)=CL THEN POKE198,0:GOSUB 210:GOSUB 232
  98. 204 SYS9841:
  99. 206 NEXT:NEXT:GOTO 136
  100. 208 REM ***** GET MUSIC FILENAME
  101. 210 F$="":FG=0:FOR X=F1+11 TO F1 STEP-1:A=PEEK(X):IF FG=0 THEN IF A=32 GOTO 214
  102. 212 FG=1:F$=CHR$(A+ABS(64*(A<32)))+F$:POKEX,A+128:POKEX+54272,1
  103. 214 NEXT:FOR X=F1+11 TO F1 STEP-1:IF PEEK(X)>128 THEN POKEX,PEEK(X)-128
  104. 216 NEXT:RETURN
  105. 218 REM ***** COLOR NAME
  106. 220 POKEF1,PEEK(F1)-128
  107. 222 FG=0:FOR X=F1+11 TO F1 STEP-1:A=PEEK(X):IF FG=0 THEN IF A=32 GOTO 226
  108. 224 FG=1:POKEX,A+128:POKEX+54272,(PEEK(X+54272)+8) AND 15
  109. 226 NEXT:FOR X=F1+11 TO F1 STEP-1:IF PEEK(X)>128 THEN POKEX,PEEK(X)-128
  110. 228 NEXT:RETURN
  111. 230 REM ***** LOAD MUSIC @FRE MEM
  112. 232 IF F$="" THEN RETURN
  113. 234 GOSUB 298:GOSUB 326
  114. 236 POKE SA,1:POKE SX,8:POKE SY,0:SYS 65466:F$=F$+".MUS":GOSUB 374
  115. 238 MA=LA:HI=FNH(MA):LO=FNL(MA)
  116. 240 POKE SA,0:POKE SX,LO:POKE SY,HI:SYS 65493:IF PEEK(SP)AND1 GOTO 380
  117. 242 REM ***** HOOK INTO INTERRUPT
  118. 244 SYS HK:POKE SX,LO:POKE SY,HI:SYS PL:F=PEEK(SX)+256*PEEK(SY):F$="":FS=F
  119. 246 IFPIC=1THENSYS9492::GOSUB353:GOTO264
  120. 248 IF PIC=2 THENPOKE53265,59:POKE53272,120:POKE56576,PEEK(56576)AND254:GOTO264
  121. 250 REM ***** PRINT CREDIT BLOCK
  122. 252 F$="":GOSUB72:PRINT"";SPC((40-LEN(T$))/2-1);T$
  123. 254 IF WDS=0 THEN GOSUB 86
  124. 256 PRINT"[154]";:P=-1:L=0
  125. 258 F=F+P+1:POKE113,FNL(F):POKE114,FNH(F)
  126. 260 SYS9760::P=PEEK(142):L=L+1:A=PEEK(F+P)
  127. 262 IFL<6THENIF A THENPRINT"";LEFT$(A1$,P+1);:IFMID$(A1$,P+1,1)<>C$GOTO258
  128. 264 WAIT 56320,16:POKE 198,0:POKE SS,7
  129. 266 REM ***** WAIT UNTIL FINISHED
  130. 268 SYS10689:IF PEEK(198) GOTO 284
  131. 270 IF WDS THEN GOSUB 406:GOTO 274
  132. 272 GOSUB 424
  133. 274 IF PEEK(SS)AND 7 GOTO 268
  134. 276 GOSUB 292:GOSUB294
  135. 278 POKEV+5,0:POKEV+7,0:POKEV+9,0
  136. 280 IF A$="[135]" THEN A$="":GOTO 60
  137. 282 RETURN
  138. 284 GETA$:POKE198,0:POKESS,0
  139. 286 IF A$="[133]"THENGOSUB294:T$="":F=FS:PI=0:WD=0:POKESS,7:GOTO252
  140. 288 IF A$="[136]"THENGOSUB292:GOSUB294:GOTO136
  141. 290 GOTO270
  142. 292 POKE53269,0:POKE54276,0:POKE54283,0:POKE54290,0:SYSDP:RETURN
  143. 294 SYS9696::RETURN
  144. 296 REM ***** LOAD WORD FILE
  145. 298 T$="":WD=0:OPEN1,8,8,F$+".WDS,P":GET#1,A$,B$:IF ST THEN CLOSE1:RETURN
  146. 300 CLOSE1:WD=1:WA=LA:T$=A$+B$:POKE 679,0
  147. 302 F$=F$+".WDS":POKE SA,1:POKE SX,8:POKE SY,0:SYS 65466:GOSUB 374
  148. 304 POKE SA,0:POKE SX,FNL(LA):POKE SY,FNH(LA):SYS 65493
  149. 306 IF PEEK(SP)AND1 GOTO 380
  150. 308 LA=PEEK(SX)+PEEK(SY)*256:WT=WA:FOR A=LA TO LA+5:POKE A,13:NEXT:LA=LA+5
  151. 310 F$=LEFT$(F$,LEN(F$)-4):POKE113,FNL(WA):POKE114,FNH(WA)
  152. 312 SYS9760::A=PEEK(142)
  153. 314 SYS9896::T$=T$+LEFT$(A1$,A)
  154. 316 WA=WA+A+1:WT=WA
  155. 318 POKE113,FNL(WT):POKE114,FNH(WT)
  156. 320 SYS9760::A=PEEK(142)
  157. 322 SYS9896::W2$=LEFT$(LEFT$(A1$,A)+BL$,38):WT=WT+A+1
  158. 324 RETURN
  159. 326 REM ***** CHECK FOR PICTURE
  160. 328 PIC=0:OPEN1,8,8,F$+".PIC":GET#1,A$,B$:CLOSE1:A=ASC(B$+C$)
  161. 330 IF A=96 THEN PIC=1:A=252:B=192:GOTO 336
  162. 332 IF A=92 THEN PIC=2:A=124:B=192:GOTO 336
  163. 334 RETURN
  164. 336 POKE834,B:POKE835,A:POKE679,55:LO=ASC(A$+C$):HI=ASC(B$+C$):A=LO+(HI*256)-2
  165. 338 HI=FNH(A):LO=FNL(A)
  166. 340 POKE SA,1:POKE SX,8:POKE SY,1:SYS 65466:F$=F$+".PIC":GOSUB 374
  167. 342 POKE SA,0:SYS 65493:IF PEEK(SP)AND1 GOTO 380
  168. 344 F$=LEFT$(F$,LEN(F$)-4)
  169. 346 IF PIC=1 OR WDS=0 THEN RETURN
  170. 348 WT=WA:GOSUB 318:T$=LEFT$(LEFT$(BL$,(40-LEN(T$))/2)+T$+BL$,40)
  171. 350 A1$=LEFT$(T$+BL$,80)+LEFT$(A1$,255-80)
  172. 352 GOSUB 420:SYS10264:RETURN
  173. 353 IF WDS THEN SYS10277:GOTO 348
  174. 354 RETURN
  175. 355 REM ***** WHAT FILES ON DISK
  176. 356 FOR F=1 TO 4:POKE 580+F,ASC(MID$(".MUS",F)):NEXT
  177. 358 OPEN 1,8,0,"$0:*=P":GET #1,S$,S$:PRINT "";:TB=1:K=0
  178. 360 IF NP>0 THEN POKE2,5:FOR A=1 TO NP:SYS9395::NEXT
  179. 362 POKE2,0:SYS9395::TB=TB+13:PRINT TAB(TB);:IF TB=40 THEN TB=1:PRINT "";
  180. 364 IF ST=0 THEN K=K+1:IF K<51 GOTO 362
  181. 366 CLOSE 1:SYS 65484:IF K=0 THEN P$="NO MUSIC ON DISK!":GOTO 386
  182. 368 IFK=>51THENPRINT""SPC(12)"F2 - NEXT PAGE"
  183. 370 GOTO 140
  184. 372 REM ***** MUSIC FILE LOADER
  185. 374 FOR F=1 TO LEN(F$):POKE 584+F,ASC(MID$(F$,F)):NEXT
  186. 376 POKE SA,LEN(F$):POKE SX,73:POKE SY,2:SYS 65469:RETURN
  187. 378 REM ***** ERROR MESSAGES
  188. 380 P=PEEK(SA):P$="ERROR: ":IF P=4 THEN P$=P$+"FILE NOT FOUND":GOTO 386
  189. 382 IF P=5 THEN P$=P$+"DEVICE NOT PRESENT":GOTO 386
  190. 384 P$=P$+STR$( ST ):GOTO 386
  191. 386 GOSUB294
  192. 388 A=LEN(P$):S=19-(A/2):A$="[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
  193. 390 PRINT "[147]";SPC(S);"[213]";LEFT$(A$,A);"[201]"
  194. 392 PRINT SPC(S);"[221]";P$;"[221]"
  195. 394 PRINT SPC(S);"[202]";LEFT$(A$,A);"[203]"
  196. 396 PRINT SPC(20-4);"[145][179]RETURN[171]":FOR B=1 TO 500:NEXT
  197. 398 PRINT SPC(20-4);"[145][192][192][192][192][192][192][192][192]":FOR B=1 TO 500:NEXT
  198. 400 GET A$:IF A$<>CHR$(13) GOTO 396
  199. 402 RUN
  200. 404 REM ***** DISPLAY WORDS
  201. 406 IF PEEK(SS+1)<1 THEN RETURN
  202. 408 W1$=W2$:POKE113,FNL(WT):POKE114,FNH(WT)
  203. 410 SYS9760::A=PEEK(142)
  204. 412 SYS9896::WT=WT+A+1
  205. 414 W2$=LEFT$(LEFT$(A1$,A)+BL$,38)
  206. 416 IF PIC=0 THEN PRINT"[153]";W1$:PRINT"";W2$:POKE SS+1,0:RETURN
  207. 418 A1$=W1$+"  "+W2$+"  "+LEFT$(A1$,255-80)
  208. 420 POKE 2,80:SYS10187
  209. 422 POKE SS+1,0:RETURN
  210. 424 REM ***** MUSIC ONLY DISPLAY
  211. 426 SYS10031
  212. 428 RETURN
  213. 430 :
  214. 432 END
  215.